package com.sunshine.lnuplusweb.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.sunshine.lnuplusweb.vo.background.BackgroundVO;
import okhttp3.*;
import org.jetbrains.annotations.NotNull;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 加载背景图片类
 * 因为所有用户都是加载一个图片
 * 所以这是一个静态类
 */
public class BackgroundUtils {
    //存储背景图片的url
    private static String backgroundUrl = null;

    //存储壁纸的时间，因为要每天更换壁纸，所以如果请求时间过了，那么就重新获取壁纸
    private static Date time = new Date();

    private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd");

    //是否正在获取壁纸，如果正在获取壁纸的话，那么就不要再次获取了
    private static boolean loading = false;

    private final static String DEFAULT_URL = "https://cn.bing.com/th?id=OHR.CorfeDorset_ZH-CN8002715956_UHD.jpg&rf=LaDigue_UHD.jpg&pid=hp&w=1920&h=1080&rs=1&c=4";

    private static BackgroundVO backgroundVO;

    public static String getBackgroundUrl(Date requestDate) {
        //如果当前正在加载壁纸，则返回默认壁纸
        if (loading) {
            return DEFAULT_URL;
        }
        //如果壁纸为空或者存储壁纸的时间不是当前时间，就要进行获取
        else if(null == backgroundUrl || !simpleDateFormat.format(requestDate).equals(simpleDateFormat.format(time))) {
            loading = true;
            loadBackgroundUrl();
            return DEFAULT_URL;
        } else {
            return backgroundUrl;
        }
    }

    //背景图片介绍
    public static String getBackgroundInfo(Date requestDate) {
        //如果当前正在加载壁纸，则返回默认壁纸
        if (loading) {
            return "这是一张默认壁纸，看到了它表示服务器刚刚重启";
        }
        //如果壁纸为空或者存储壁纸的时间不是当前时间，就要进行获取
        else if(null == backgroundUrl || !simpleDateFormat.format(requestDate).equals(simpleDateFormat.format(time))) {
            loading = true;
            loadBackgroundUrl();
            return "这是一张默认壁纸，看到了它表示服务器刚刚重启";
        } else {
            return backgroundVO.getImages().get(0).getCopyright();
        }
    }

    /**
     * 下载背景图网址
     */
    private static void loadBackgroundUrl(){
        String url = "http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1";
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder().url(url).build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(@NotNull Call call, @NotNull IOException e) {
                loading = false;
            }

            @Override
            public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                ResolveBackgroundUrl(response.body().string());
            }
        });
    }

    //解析background的json信息
    private static void ResolveBackgroundUrl(String url1){
        String reallyUrl = null;
        String url0 = "http://cn.bing.com";
        try {
            backgroundVO = JSON.parseObject(url1, BackgroundVO.class);
            reallyUrl = url0 + backgroundVO.getImages().get(0).getUrl();
        } catch (JSONException e) {
            e.printStackTrace();
        }finally {
            backgroundUrl = reallyUrl;
            //结束获取图片
            loading = false;
            //更改图片获取时间
            time = new Date();
        }
    }
}
